/**
 * Set与数组相比：没有索引，只能通过迭代来访问元素，保证元素唯一
 *  
 */

// 可以通过可遍历对象来创建Set，作为Set的默认元素
let set = new Set("1223456");


// add()：向set中添加元素，返回当前Set的引用，所以可以链式调用
set.add("a").add("b").add("c");
console.log("set = ",set);

// has()：判断set中是否存在该元素
console.log(set.has("a")); // true
// Set判断元素是否相等，严格遵守 === 规则
console.log(set.has(1)); // false

// delete()：删除指定元素，返回删除是否成功
console.log(set.delete("a")); // true
console.log(set.delete(1)); // false
console.log("set = ",set);

// size属性：返回元素的个数
console.log(set.size);

// clear(): 清空元素
set.clear();
console.log("set = ",set);

set.add(1).add(2).add(3).add(4);

// Set是一个可遍历对象（伪数组对象）
console.log("------------for...of遍历----------");
for (let v of set) {
    console.log(v);
}


// Set虽然不是数组，但是提供了forEach方法
console.log("------------forEach方法遍历----------");
set.forEach(v => {
    console.log(v);
})

// set的遍历方法，就是values方法，也可以使用values方法遍历
console.log(set.values == set[Symbol.iterator]); // true

console.log("------------values方法遍历----------");
for (let v of set.values()) {
    console.log(v);
}
